// pages/service/searchPage/searchPage.js
import request from "../../../utils/request"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    inputValue: "",
    historyList: [], // 仅用于页面渲染，数据来源 wx.storage
    serviceList: [],
    showDialog: false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 页面加载时从 wx.storage 读取历史记录，同步到页面渲染
    this.getHistoryFromStorage();
  },

  /**
   * 从 wx.storage 读取搜索历史并更新页面
   * 作用：确保页面打开/刷新后，之前的搜索历史不丢失
   */
  getHistoryFromStorage() {
    // 读取 storage 中 key 为 "searchHistory" 的数据，无数据时默认空数组
    const history = wx.getStorageSync('searchHistory') || [];
    // 将读取到的历史记录更新到 data，用于页面渲染
    this.setData({
      historyList: history
    });
  },

  /**
   * 输入框内容变化时触发（包括手动删除）
   */
  inputText(e) {
    const currentInput = e.detail;
    this.setData({
      inputValue: currentInput,
      // 新增：输入框为空则清空 serviceList，避免无输入时显示旧搜索结果
      serviceList: currentInput === '' ? [] : this.data.serviceList
    });
  },

 /**
   * 执行搜索操作：修改为存储完整护理项目对象
   */
  doSearch(e) {
    console.log("当前搜索内容是:" + e.detail);
    const keyword = e.detail;
    if (keyword != null && keyword != '') {
      // 1. 搜索历史相关逻辑（不变）
      const oldHistory = wx.getStorageSync('searchHistory') || [];
      const newHistory = [...new Set([keyword, ...oldHistory.filter(item => item !== keyword)])];
      const limitHistory = newHistory.length > 10 ? newHistory.slice(0, 10) : newHistory;
      wx.setStorageSync('searchHistory', limitHistory);
      this.setData({ historyList: limitHistory });
      console.log("搜索历史（存储中）:" + limitHistory);

      // 2. 调用接口：接收完整护理项目数组，直接存入serviceList
      this.getNursingItemByName(keyword).then(items => {
        if (items && items.length > 0) {
          // 存储完整对象数组（不再提取name）
          this.setData({ serviceList: items }); 
        } else {
          this.setData({ serviceList: [] });
        }
      });
    }
  },

  /**
   * 调用护理项目接口：返回完整对象数组（不变，确保返回的是[{id,name,...},...]）
   */
  async getNursingItemByName(name) {
    try {
      if (!name || name.trim() === '') {
        wx.showToast({ title: '请输入护理项目名称', icon: 'none' });
        return [];
      }
      const res = await request({
        url: `/serve/project/name/${encodeURIComponent(name)}`,
        method: 'GET',
        loadingText: '查询护理项目中...',
        errorText: '查询护理项目失败'
      });
      if (res.statusCode === 200) {
        console.log(`护理项目【${name}】查询结果：`, res.data);
        if (res.data.code === 200 && Array.isArray(res.data.data)) {
          return res.data.data; // 返回完整对象数组
        } else {
          wx.showToast({ title: res.data.msg || `未找到【${name}】相关项目`, icon: 'none' });
          return [];
        }
      }
    } catch (err) {
      console.error(`查询护理项目【${name}】异常：`, err);
      wx.showToast({ title: '网络异常，请稍后重试', icon: 'none' });
      return [];
    }
  },

  /**
   * 新增：点击搜索结果（护理项目），打印完整数据到控制台
   */
  tapServiceItem(e) {
    // 获取当前点击的完整护理项目对象
    const currentItem = e.currentTarget.dataset.item;
    // 打印完整数据到控制台（格式化输出，更易读）
    console.log("当前点击的护理项目id：");
    console.log(currentItem.id); // dir方法比log更适合展示对象结构
    wx.navigateTo({
      url: `/pages/service/productDetail/productDetail?id=${currentItem.id}`,
    })
  },
  /**
   * 点击输入框自带清空按钮时触发（兜底逻辑）
   */
  onInputClear() {
    this.setData({
      inputValue: '',
      serviceList: []
    });
  },

  /**
   * 点击历史记录，触发重新搜索
   */
  tapHistory(e) {
    const val = e.currentTarget.dataset.val;
    // 将历史关键词回显到输入框
    this.setData({
      inputValue: val
    });
    // 模拟搜索事件，触发重新查询
    this.doSearch({
      detail: val
    });
  },

  /**
   * 点击删除历史按钮，打开确认弹窗
   */
  deleteHistory() {
    this.setData({
      showDialog: true
    });
  },

  /**
   * 关闭弹窗：重置弹窗状态
   */
  onClose() {
    this.setData({
      showDialog: false,
    });
  },

  /**
   * 点击确认按钮：清空搜索历史（操作 wx.storage）
   */
  handleConfirm() {
    // 1. 清除 wx.storage 中存储的搜索历史
    wx.removeStorageSync('searchHistory');
    // 2. 更新页面 data，清空历史记录渲染
    this.setData({
      historyList: []
    }, () => {
      // 数据更新完成后提示用户
      wx.showToast({
        title: '清空成功',
        icon: 'success'
      });
      // 关闭弹窗
      this.onClose();
    });
  },

  /**
   * 渠道返回按钮：返回上一页
   */
  channel() {
    wx.navigateBack()
  },

  /**
   * 返回按钮：返回上一页
   */
  back() {
    wx.navigateBack()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})